<?php
/**
 * Registry
 * 
 * 对象工厂
 *
 * @author   songhuan <iphper@yeah.net>
 * @version   $Id: Registry.php 1 2010-08-10 14:40:00Z $
 */
class Registry
{
	private static $_instances = array();
	
	private function __construct() 
	{
	}
	
	private function __clone()
	{
	}
	
	/**
	 * 获取对象
	 * 
	 * @param string $index 对象名称
	 * @return Object 实例化对象
	 */
	public static function get($index)
	{
		if (!self::has($index)) 
			throw new Exception("No entry is registered for key '$index'");
			
		return self::$_instances[$index];
	}
	
	/**
	 * 设置对象
	 * 
	 * @param string $index 对象名称
	 * @param Object $instance 实例化对象
	 * @return void
	 */
	public static function set($index, $instance = null)
	{
		self::$_instances[$index] = $instance;
	}

	/**
	 * 判读某个对象是否存在
	 * 
	 * @param string $index 对象名称
	 * @return boolean 
	 */
	public static function has($index)
	{
		return array_key_exists($index, self::$_instances);
	}
}
